package com.zaoniao.enstudy.domain.repository;

import com.zaoniao.enstudy.domain.entity.VocabularyWords;
import com.zaoniao.enstudy.domain.entity.bo.VocabularyWordsBo;
import com.zaoniao.enstudy.infracore.web.PagedGridResult;

/**
 * 收藏单词词汇明细仓储层业务.
 *
 * @author llb
 */
public interface UserVocabularyWordsRepository {

    /**
     * 新增词汇单词明细.
     *
     * @param userVocabularyWords 词汇单词.
     */
    void insert(VocabularyWords userVocabularyWords);

    /**
     * 更换词汇表.
     *
     * @param vocabularyWords 待更换的单词信息.
     */
    void updVocabularyWords(VocabularyWords vocabularyWords);

    /**
     * 取消收藏
     *
     * @param vocabularyWordsId -
     */
    void updStatus(Integer vocabularyWordsId);

    /**
     * 删除词汇表单名下所有单词（逻辑删除）
     *
     * @param vocabularyId 词汇表Id
     */
    void updStatusByVocabularyId(Integer vocabularyId);

    /**
     * 根据词汇表Id查询词汇表所有收藏的单词
     *
     * @param vocabularyId 词汇表Id
     * @param page         第几页
     * @param size         每页显示数量
     * @return 单词列表分页数据
     */
    PagedGridResult<VocabularyWordsBo> getVocabularyWordsPage(Integer vocabularyId, Integer page, Integer size);

    /**
     * 检查单词是否已存在待新增的词汇表.
     *
     * @param vocabularyWords 待新增词汇表的单词信息
     * @return -
     */
    boolean checkVocabularyWords(VocabularyWords vocabularyWords);

}
